############################################################################################
#                           Fonctions de gestion des Statistiques                          #
############################################################################################

# Requête calculant les jeux ayant cumulé le plus de participation au cours des événements
sub statGame{
  my $req = <<"SQL";
  SELECT jeu.nomJeu, sum(participant) AS participants FROM jeu,utilise,viewEvenement
    WHERE jeu.nomJeu = utilise.nomJeu
    AND utilise.idEvenement = viewEvenement.idEvenement
    GROUP BY jeu.nomJeu
    ORDER BY sum(participant) DESC;
SQL
  my $hashGames = $dbd->selectall_hashref($req, 'nomJeu');
  return $hashGames;
}

# Requête permettant de créer la vue donnant le nombre de participant par événement
sub createView {
  my $req = <<"SQL";
  CREATE OR REPLACE VIEW viewEvenement(idEvenement,participant) as 
  SELECT evenement.idEvenement,count(*) FROM participe, evenement
    WHERE evenement.idEvenement = participe.idEvenement
    GROUP BY idEvenement
    ORDER BY count(*);
SQL
  my $prep = $dbd->prepare($req);
  $prep->execute;
  $prep->finish;
}

# Requête calculant classant les adherant ayant le plus participé aux événements
sub statEvent{
  my $req = <<"SQL";
  SELECT personne.nomPersonne,personne.prenomPersonne,adherent.idAdherent, count(*) AS participations FROM evenement,adherent,participe,eleve,personne
    WHERE adherent.login = eleve.login
    AND eleve.idPersonne = personne.idPersonne
    AND adherent.idAdherent = participe.idAdherent
    AND participe.idEvenement = evenement.idEvenement
    AND dateEvenement BETWEEN SUBDATE(CURDATE(), INTERVAL 1 YEAR) AND CURDATE()
    GROUP BY adherent.idAdherent
    ORDER BY count(*) DESC;
SQL
  my $hashEvents = $dbd->selectall_hashref($req, 'idAdherent');
  return $hashEvents;
}

# Requête calculant la moyenne des livres empruntés durant un mois sur un an
sub statBookYear{
  my $req = <<"SQL";
  SELECT *,count(*)/12 AS moyenne FROM emprunt,livre
    WHERE emprunt.ISBN = livre.ISBN
    AND dateEmprunt BETWEEN SUBDATE(CURDATE(), INTERVAL 1 YEAR) AND CURDATE()
    GROUP BY livre.ISBN;
SQL
  my $hashBooks = $dbd->selectall_hashref($req, 'ISBN');
  return $hashBooks;
}

# Requête clasant les livres les plus empruntés
sub statBook{
  my $req = <<"SQL";
  SELECT *,count(*) AS nbEmprunt FROM livre,emprunt
    WHERE emprunt.ISBN = livre.ISBN
    GROUP by livre.titre
    ORDER BY count(*) DESC;
SQL
  my $hashBooks = $dbd->selectall_hashref($req, 'ISBN');
  return $hashBooks;
}

1;
